from student import *


class StudentManager(object):
    def __init__(self):
        self.student_list = []

    def run(self):
        # 1.加载文件的数据；
        self.load_student()
        while True:
            # 2.显示菜单；
            self.show_menu()
            # 3.接受用户输入；
            type_info = input('请输入需要的功能序号:')
            if type_info == '1':
                # 增
                self.add_student()
            elif type_info == '2':
                # 删
                self.del_student()
            elif type_info == '3':
                # 改
                self.modify_student()
            elif type_info == '4':
                # 查
                self.search_student()
            elif type_info == '5':
                # 显示所有
                self.show_student()
            elif type_info == '6':
                # 保存（文件操作）
                self.save_student()
            elif type_info == '7':
                # 退出
                break
            else:
                print('您的输入有误，请重新输入：')

        # 4.根据输入执行功能；

    # 显示菜单
    @staticmethod
    def show_menu():
        print('请选择功能：')
        print('1.添加学员；')
        print('2.删除学员；')
        print('3.修改学员；')
        print('4.查询学员；')
        print('5.显示所有；')
        print('6.保存；')
        print('7.退出；')

    # 加载学院信息
    def load_student(self):
        try:
            f=open('student.data','r')
        except:
            f=open('student.data','w')
        else:
            con=f.read()
            #eval转换字符串原来的形式
            list1=eval(con)
            self.student_list=[Student(i['name'],i['gender'],i['tel']) for i in list1]
        finally:
            f.close()

    # 添加学员
    def add_student(self):
        name = input('请输入姓名：')
        gender = input('请输入性别：')
        tel = input('请输入手机号：')
        student = Student(name, gender, tel)
        self.student_list.append(student)

    # 删除学院
    def del_student(self):
        name = input('请输入姓名：')
        for item in self.student_list:
            if item.name == name:
                self.student_list.remove(item)
                print(f'删除学员：{name}成功!')
                break
        else:
            print('学员不存在！')
        print(self.student_list)

    # 修改
    def modify_student(self):
        name = input('请输入姓名：')
        for item in self.student_list:
            if item.name == name:
                item.name = input('请输入修改的姓名：')
                item.gender = input('请输入修改的性别：')
                item.tel = input('请输入修改的号码：')
                print(f'修改的人员姓名是{item.name}，性别:{item.gender}，手机号：{item.tel}')
                break
        else:
            print('学员不存在！')
        print(self.student_list)

    # 查询
    def search_student(self):
        name = input('请输入姓名：')
        for item in self.student_list:
            if item.name == name:
                print(f'查询的人员姓名是{item.name}，性别:{item.gender}，手机号：{item.tel}')
                break
        else:
            print('学员不存在！')

    # 显示所有
    def show_student(self):
        print('姓名\t\t性别\t\t手机号')
        for i in self.student_list:
            print(f'{i.name}\t\t{i.gender}\t\t{i.tel}')

    # 保存信息
    def save_student(self):
        # 打开文件
        f = open('student.data', 'w')
        # 列表生成式-----重点-------
        con = [i.__dict__ for i in self.student_list]
        # 加强制转换字符串
        f.write(str(con))
        f.close()
